Ejecución y procesamiento de consultas

Introducción

SQL es un lenguaje de programación declarativa, ya que solo indicamos lo que queremos hacer, pero no de qué forma.

Ejemplo:

Tenemos dos opciones para realizar la consulta:

 

Ciclo de vida de sentencias SQL

El procesamiento de consultas hace referencia a una serie de actividades implicadas en la extracción de datos de una base de datos. Estas actividades incluyen la traducción de consultas expresadas en lenguajes de bases de datos de alto nivel en expresiones implementadas en el nivel físico del sistema, así como transformaciones de optimización de consultas y la evaluación real de las mismas.

 

Ciclo_vida_consultas

 

Cuando se realiza una consulta en un SGBD es necesario realizar una serie de pasos para obtener una consulta válida:

Es responsabilidad del SGBD que los anteriores componentes funcionen correctamente y que seleccionen los planes de ejecución adecuados en base a los recursos de los que disponen.

 

Optimización de consultas

Optimizar una consulta consiste en conseguir que el plan de ejecución elegido por el SGBD sea el plan de ejecución óptimo en tiempo y en uso de CPU.

Existen dos formas:

 

El optimizador estima el coste de cada plan en base a:

 

Las optimizaciones primarias son las optimizaciones que realiza el optimizador de forma nativa y suelen realizarse cuando ejecutamos:

 

Formas de optimización

Reducción en las expresiones

Expresiones de este estilo:

Pasan a esto:

 

Eliminar código que no sirve

Como 0 = 1 no es posible y es una conjunción con s1 = 5, esto siempre será falso, por lo tanto, podemos reducir la expresión al valor de la disyunción.

 

Driver expression

Las Driver expression son las acciones que nosotros realizamos para que el optimizador haga lo que nosotros queremos que haga.

 

Ejemplo: Supongamos que no tenemos ningún índice.

En este caso, el peor plan de ejecución seria la realización de un full scan.

Lo que nosotros haríamos para mejorar esta consulta, sería crear un índice en titular para evitar el full scan y reducir el tiempo de ejecución de la consulta.

Por esto se llama driver expresion, porque nosotros, al crear el índice en titular, estamos "obligando" al SGBD a hacer uso de este índice para realizar la consulta.

 

Papel de DBAs (Data Bases Administrators) y DEVs (Developers)

 

by Jose Manuel Pinillos